﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BaseKnowledge
{
    // 定义一个委托，它决定了事件可以附加的处理方法的签名
    public delegate void EventHandler(string message);

    //发布者
    public class Publisher
    {
        // 定义一个事件，定义一个事件需要指定一个方法签名
        public event EventHandler CustomEvent;

        // 触发事件的方法
        public void RaiseEvent()
        {
            // 检查是否有处理方法订阅了这个事件
            CustomEvent?.Invoke("Event raised.");
        }
    }

    // 订阅者
    public class Subscriber
    {
        // 订阅事件的方法
        public void Subscribe(Publisher publisher)
        {
            // 将处理方法绑定到事件
            publisher.CustomEvent += OnCustomEvent;
        }

        // 事件处理方法
        private void OnCustomEvent(string message)
        {
            Console.WriteLine($"Event received by subscriber with message: {message}");
        }
    }
}
